// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSegmentAttributesImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../OracleSegmentAttributesImpl.h"
#include "../OracleSQLObject.h"

class OracleLobStorageClause
    : virtual public OracleSegmentAttributesImpl,
      virtual public OracleSQLObject
{
public:
  SQLName_ptr segementName;

  SQLName_list_ptr items;

  BOOL_ptr secureFile;
  BOOL_ptr basicFile;

  BOOL_ptr enable;

  SQLExpr_ptr chunk;

  BOOL_ptr cache;
  BOOL_ptr logging;

  BOOL_ptr compress;
  BOOL_ptr keepDuplicate;
  BOOL_ptr retention;

  OracleStorageClause_ptr storageClause;

  SQLExpr_ptr pctversion;

  OracleLobStorageClause();
  SHAREDOBJECT(OracleLobStorageClause);
  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  void cloneTo(OracleLobStorageClause_ptr x);

  SQLObject_ptr clone();

  BOOL_ptr getEnable();

  void setEnable(BOOL_ptr enable);

  SQLExpr_ptr getChunk();

  void setChunk(SQLExpr_ptr chunk);

  SQLName_list_ptr getItems();

  BOOL_ptr isSecureFile();

  void setSecureFile(BOOL_ptr secureFile);

  BOOL_ptr isBasicFile();

  void setBasicFile(BOOL_ptr basicFile);

  BOOL_ptr getCache();

  void setCache(BOOL_ptr cache);

  BOOL_ptr getLogging();

  void setLogging(BOOL_ptr logging);

  BOOL_ptr getCompress();

  void setCompress(BOOL_ptr compress);

  BOOL_ptr getKeepDuplicate();

  void setKeepDuplicate(BOOL_ptr keepDuplicate);

  BOOL_ptr isRetention();

  void setRetention(BOOL_ptr retention);

  OracleStorageClause_ptr getStorageClause();

  void setStorageClause(OracleStorageClause_ptr storageClause);

  SQLExpr_ptr getPctversion();

  void setPctversion(SQLExpr_ptr pctversion);

  SQLName_ptr getSegementName();

  void setSegementName(SQLName_ptr segementName);
};
